package com.tbit.uqbike.webmanager.controller;

import com.alibaba.nacos.common.utils.StringUtils;
import com.tbit.uqbike.object.pojo.dto.RideOrderDTO;
import com.tbit.uqbike.object.pojo.vo.RideUseLogVO;
import com.tbit.common.entity.view.PageResult;
import com.tbit.common.entity.view.Result;
import com.tbit.uqbike.service.business.RideUseLogService;
import com.tbit.uqbike.webmanager.util.csv.annotations.AsyncDownload;
import com.tbit.uqbike.webmanager.util.excel.ExcelUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * 骑行订单金额分布
 *
 * @Author:BUGTian
 * @DATE: 2023/1/7
 */
@RestController
@RequestMapping("/rideUseLog")
public class RideUseLogController {

    @Autowired
    private RideUseLogService rideUseLogService;

    /**
     * 分页查询骑行订单金额分布
     *
     * @param page       当前页码
     * @param size       每页显示的行
     * @param brandId    品牌id
     * @param accountIds 区域id
     * @param orderNO    订单编号
     * @param startTime  开始时间
     * @param endTime    结束时间
     * @return
     */
    @GetMapping("/queryPage")
    public Result<PageResult<RideUseLogVO>> queryPage(@NotNull Integer page, @NotNull Integer size, @NotNull Integer brandId, String accountIds, String orderNO, Date startTime, Date endTime) {
        PageResult<RideUseLogVO> pageResult = rideUseLogService.queryPage(page, size, brandId, accountIds, orderNO, startTime, endTime);
        return Result.success(pageResult);
    }

    /**
     * 导出骑行订单金额分布
     *
     * @param brandId    品牌id
     * @param accountIds 区域id
     * @param orderNO    订单编号
     * @param startTime  开始时间
     * @param endTime    结束时间
     * @return
     */
    @GetMapping("/export")
    public Result<Object> export(@NotNull Integer brandId, String accountIds, String orderNO, Date startTime, Date endTime) {
        if (StringUtils.isEmpty(accountIds)) {
            return Result.error("参数有误");
        }
        List<RideUseLogVO> list = rideUseLogService.export(brandId, accountIds, orderNO, startTime, endTime);
        ExcelUtil<RideUseLogVO> excelUtil = new ExcelUtil<>(RideUseLogVO.class);
        return Result.success(excelUtil.exportExcel(list, "骑行订单金额分布").getData());
    }

    /**
     * 导出骑行订单金额分布CSV
     *
     * @return
     */
    @AsyncDownload(defaultFileName = "骑行订单金额分布")
    @GetMapping("/exportCsv")
    public Result<Object> exportCsv(RideOrderDTO rideOrderDTO) {
        if (StringUtils.isEmpty(rideOrderDTO.getAccountIds())) {
            return Result.error("参数有误");
        }
        String url = rideUseLogService.exportCsv(rideOrderDTO);
        return Result.success(url);
    }
}
